![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Znalazłem pewien kod w JAVIe, który rozwiązuje mój problem.
http://stackoverflow.com/questions/3026263...=active#tab-top Niestety utknąłem w jego przepisywaniu.
Ten post edytował markonix 20.08.2013, 12:19:36 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Instrukcja:
Kod String str = Integer.toString(i, alphabet.length); rzutuje liczbę w zmiennej i na string, jednak nie dłuższy niż alphabet.length. Odnośnie pętli jest to odpowiednik foreach, taka konstrukcja w php nie przejdzie. Zmienna str jest rzutowana na tablicę znakową i przy każdym przejściu pętli kolejne elementy są przypisywane do zmiennej c. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Do zmiennej str zostaje przypisana reprezentacja liczby w systemie liczbowym odpowiadającym długości tablicy alphabet: http://docs.oracle.com/javase/7/docs/api/j...ml#toString(int, int) - w PHP uzyskasz to samo przy pomocy base_convert. Natomiast pętlę lecącą po każdym znaku mógłbyś utworzyć w ten sposób:
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Kod final String chars = "0123456789abcdefghijklmnopqrstuvwxyz"; int wordLength = 3; char[] alphabet = { 'a', 'b', 'c' }; for (int i = 0; i < Math.pow(wordLength, alphabet.length); i++) { String str = Integer.toString(i, alphabet.length); String result = ""; while (result.length() + str.length() < wordLength) result += alphabet[0]; for (char c : str.toCharArray()) result += alphabet[chars.indexOf(c)]; System.out.println(result); }
Takie coś mi wyszło, niestety zapętla się się w jakimś miejscu i wywala. Ten post edytował markonix 20.08.2013, 12:59:40 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W PHP operatorem łączenia ciągów jest kropka, nie plus, czyli ".=" zamiast "+=" przy zmiennej $result.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Tak, właśnie też to poprawiłem i zapętlenia nie ma choć jeszcze są błędy. Ok. Wreszcie się udało. Nie rozdzielał dobrze znaków w tym ostatnim foreach.
Jeszcze jeden edit. Na odwrót potęgi.. Przy większych testach zaczynało się znowu psuć.. Kod prawidłowy:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 08:44 |